package ihm;

import commands.Command;

/**
 * Interface de l'IHM de l'application.
 */
public interface ApplicationPanel {

	/**
	 * Ajout d'un afficheur.
	 * @param displayerPanel	Le nouveau afficheur.
	 */
	public void addDisplayerPanel(DisplayerPanel displayerPanel);
	
	/**
	 * Retrait d'un afficheur.
	 * @param displayerPanel	L'afficheur à retirer.
	 */
	public void removeDisplayerPanel(DisplayerPanel displayerPanel);
	
	/**
	 * Ajout du panneau permettant d'activer ou de désactiver la modification automatique de la valeur du capteur.
	 * @param sensorPanel	Le panneau permettant d'activer ou de désactiver la modification automatique de la valeur du capteur.
	 */
    public void addSensorModifierActivationPanel(SensorModifierActivationPanel sensorPanel);

	/**
	 * Modification de la commande destinée à mettre à jour le modèle d'un capteur après une modification de la valeur de sa présentation associée.
	 * @param notifyChangesToSensorCommand	La nouvelle commande destinée à mettre à jour le modèle d'un capteur après une modification de la valeur 
	 * 										de sa présentation associée.
	 */
	public void setNotifyChangesToSensorCommand(Command notifyChangesToSensorCommand);
	
	/**
	 * Modification de la commande destinée à modifier la stratégie utilisée pour la diffusion des valeurs du capteur.
	 * @param notifyStrategyChangesToSensorCommand	La nouvelle commande destinée à modifier la stratégie utilisée pour la diffusion des valeurs du capteur.
	 */
	public void setNotifyStrategyChangesToSensorCommand(Command notifyStrategyChangesToSensorCommand);
    
	/**
	 * Modification de la valeur de la présentation du capteur.
	 * @param value	La nouvelle valeur de la présentation du capteur.
	 */
	public void setValue(int value);
	
	/**
	 * Récupération de la valeur de la présentation du capteur.
	 * @return	la valeur de la présentation du capteur
	 */
    public int getValue();
    
    /**
     * Récupération du numéro de la stratégie de diffusion courante.
     * @return	le numéro de la stratégie de diffusion courante
     */
    public int getCurrentStrategyNumber();
    
    /**
     * Blocage ou déblocage de la présentation du capteur.
     * @param enabled	L'état de blocage du capteur.
     */
    public void enableSensorModification(boolean enabled);
        
}
